 <?PHP
//require_once $pastaApp.'inc/header.php';
require_once _DIRETORIO_BACKEND_._SEPARADOR_DIRETORIO_.'db.php';
require_once _DIRETORIO_BACKEND_VO_._SEPARADOR_DIRETORIO_.'VOempresa.php';
/**
* Esta Classe é responsável por inserir ou atualizar um registro de Pessoa Jurídica.
* @name DBempresa
* @version 1.0
* @access public
* @package DB
**/
abstract Class DBempresa{
	/**
	 * Método responsável por retornar os dados. 
	 * @param int $idEmpresa
	 * @access public
	 * @return oVO objeto do tipo empresa
	 */
	public function getByID($idEmpresa){
            $DB= new DB();
            $dbh = $DB->conec();
            $oVO = new VOempresa();
            try{
                $sql = "SELECT * FROM EMPRESA WHERE idEmpresa=:idEmpresa";
                $stmt = $dbh->prepare($sql);
                $stmt->bindParam (':idEmpresa',$idEmpresa,PDO::PARAM_INT);
                $stmt->execute();
                $oVO = $stmt->fetch(PDO::FETCH_OBJ);
            } 
            catch(PDOException $e){
                $DB->DBerror($e,$sql);
            }
            return $oVO;
	}
	/**
	 * Método responsável por montar um Sql de busca. 
	 * @param objeto $oVO 
	 * @param $pag 
	 * @access public
	 * @return resultado da Busca.
	 */
	public function get($oVO,$pag){
	
            $DB = new DB();
            $dbh = $DB->conec();


            $pag_tela = 2000;
            if(!isset($first)){$first = false;}

            try{
                $sql = "SELECT * FROM EMPRESA";

               /* if(!empty($oVO->endereco)){
                       $sql.=$this->getSQLFirst($first)."endereco like :endereco" ;
                }
                $sql.=" order by endereco";
                       */
//                if(!isset($pag)){
//                       $pg1 = ($pag_tela*($pag-1));
//                       $sql.=" limit ".$pg1." , ".$pag_tela;
//                } 

                $stmt = $dbh->prepare($sql);

                $stmt->execute();
                $result = $stmt->fetchAll(PDO::FETCH_CLASS,"VOempresa");

            } catch (PDOException $e){
                $DB->DBerror($e, $sql);
            }

            return $result;	
		
	}
	
  	/**
	 * Método responsável por adicionar à string do SQl a clausula WHERE ou AND. 
	 * @param boolean $first 
	 * @access public
	 * @return Where ou AND.
	 */
	public function getSqlFirst(&$first){
	    $return = " AND ";
	    if($first){$return=" WHERE ";$first=false;}
	    return($return);
	}
	
   	/**
	 * Método responsável por inserir ou atulizar um registro. 
	 * @param objeto $oVO 
	 * @access public
	 */	
	public function save($oVO){
            $DB = new DB();
            $dbh = $DB->conec();
            if($oVO->idEmpresa > 0){
                $sql = "UPDATE EMPRESA SET 
                               nome =:nome
                               ,cnpj =:cnpj
                               ,email =:email
                               ,status =:status
                         WHERE idEmpresa =:idEmpresa" ;
                $stmt = $dbh->prepare($sql);
                $stmt->bindParam(':idEmpresa',$oVO->idEmpresa,PDO::PARAM_INT);
            } else {
                $sql = "INSERT INTO EMPRESA 
                                        (nome		
                                        ,cnpj
                                        ,email
                                        ,status)
                                  VALUES
                                         (:nome
                                         ,:cnpj
                                         ,:email
                                         ,:status)";         
                 $stmt = $dbh->prepare($sql);	
            }
            $stmt->bindParam(':nome',mb_convert_encoding($oVO->nome, "ISO-8859-1", "UTF-8"),PDO::PARAM_STR);
            $stmt->bindParam(':cnpj',mb_convert_encoding($oVO->cnpj, "ISO-8859-1", "UTF-8"),PDO::PARAM_STR);
            $stmt->bindParam(':email',mb_convert_encoding($oVO->email, "ISO-8859-1", "UTF-8"),PDO::PARAM_STR);
            $stmt->bindParam(':status',mb_convert_encoding($oVO->status, "ISO-8859-1", "UTF-8"),PDO::PARAM_STR);
            $stmt->execute();
            
            if($oVO->idEmpresa == 0){
                $sql = "SELECT LAST_INSERT_ID()";
                $stmt = $dbh->prepare($sql);
                $stmt->execute();
                $lastId = $stmt->fetchColumn();
                return $lastId;
            }
            return $oVO->idEmpresa;
	}
		
	/**
	 * Método responsável por deletar um registro. 
	 * @param int $idEmpresa
	 * @access public
	 */
	public function delete($idEmpresa){
            $DB = new DB();
            $dbh = $DB->conec();
            $sql = "DELETE FROM EMPRESA WHERE idEmpresa =:idEmpresa";	
            $stmt = $dbh->prepare($sql);
            $stmt->bindParam(':idEmpresa',$idEmpresa,PDO::PARAM_INT );
            $stmt->execute();
	}

}
